package tools

import (
    "context"
    "fmt"
    "io"
    "net/http"
    "os"
    "path/filepath"
    "strings"

    "github.com/firebase/genkit/go/genkit"
    "github.com/firebase/genkit/go/ai"
)

// SummarizeDocs 读取文件或URL并生成摘要
func SummarizeDocs(ctx context.Context, g *genkit.Genkit, pathOrURL string) (string, error) {
    var content string
    if strings.HasPrefix(pathOrURL, "http") {
        // 在线文档（Notion、Google Docs等）
        resp, err := http.Get(pathOrURL)
        if err != nil {
            return "", fmt.Errorf("failed to fetch URL: %w", err)
        }
        defer resp.Body.Close()
        data, _ := io.ReadAll(resp.Body)
        content = string(data)
    } else {
        // 本地文件或文件夹
        fi, err := os.Stat(pathOrURL)
        if err != nil {
            return "", err
        }

        if fi.IsDir() {
            files, _ := os.ReadDir(pathOrURL)
            for _, f := range files {
                if strings.HasSuffix(f.Name(), ".md") || strings.HasSuffix(f.Name(), ".txt") {
                    data, _ := os.ReadFile(filepath.Join(pathOrURL, f.Name()))
                    content += string(data) + "\n\n"
                }
            }
        } else {
            data, _ := os.ReadFile(pathOrURL)
            content = string(data)
        }
    }

    if len(content) < 100 {
        return "文档内容较少，暂无摘要。", nil
    }

    prompt := fmt.Sprintf(`
请对以下工作文档进行摘要提炼，突出本周工作内容、成果与问题。
要求输出简洁的中文文本摘要（300字以内）。

文档内容：
%s
`, content)

    result, err := genkit.Generate(ctx, g, ai.WithPrompt(prompt))
    if err != nil {
        return "", err
    }

    return result.Text(), nil
}
